diff --git a/examples/ssh_server_fork.c b/examples/ssh_server_fork.c
index 217c5298..20008c76 100644
--- a/examples/ssh_server_fork.c
+++ b/examples/ssh_server_fork.c
@@ -235,8 +235,6 @@ struct channel_data_struct {
 struct session_data_struct {
     /* Pointer to the channel the session will allocate. */
     ssh_channel channel;
-    int auth_attempts;
-    int authenticated;
 };
 
 static int data_function(ssh_session session, ssh_channel channel, void *data,
@@ -406,8 +404,8 @@ static int shell_request(ssh_session session, ssh_channel channel,
     if (cdata->pty_master != -1 && cdata->pty_slave != -1) {
         return exec_pty("-l", NULL, cdata);
     }
-    /* Client requested a shell without a pty, let's pretend we allow that */
-    return SSH_OK;
+
+    return exec_nopty("/bin/sh -l", cdata);
 }
 
 static int subsystem_request(ssh_session session, ssh_channel channel,
@@ -421,16 +419,13 @@ static int subsystem_request(ssh_session session, ssh_channel channel,
 
 static int auth_password(ssh_session session, const char *user,
                          const char *pass, void *userdata) {
-    struct session_data_struct *sdata = (struct session_data_struct *) userdata;
-
     (void) session;
+    (void) userdata;
 
     if (strcmp(user, USER) == 0 && strcmp(pass, PASS) == 0) {
-        sdata->authenticated = 1;
         return SSH_AUTH_SUCCESS;
     }
 
-    sdata->auth_attempts++;
     return SSH_AUTH_DENIED;
 }
 
@@ -496,9 +491,7 @@ static void handle_session(ssh_event event, ssh_session session) {
 
     /* Our struct holding information about the session. */
     struct session_data_struct sdata = {
-        .channel = NULL,
-        .auth_attempts = 0,
-        .authenticated = 0
+        .channel = NULL
     };
 
     struct ssh_channel_callbacks_struct channel_cb = {
@@ -530,19 +523,11 @@ static void handle_session(ssh_event event, ssh_session session) {
     ssh_set_auth_methods(session, SSH_AUTH_METHOD_PASSWORD);
     ssh_event_add_session(event, session);
 
-    n = 0;
-    while (sdata.authenticated == 0 || sdata.channel == NULL) {
-        /* If the user has used up all attempts, or if he hasn't been able to
-         * authenticate in 10 seconds (n * 100ms), disconnect. */
-        if (sdata.auth_attempts >= 3 || n >= 100) {
-            return;
-        }
-
+    while (sdata.channel == NULL) {
         if (ssh_event_dopoll(event, 100) == SSH_ERROR) {
             fprintf(stderr, "%s\n", ssh_get_error(session));
             return;
         }
-        n++;
     }
 
     ssh_set_channel_callbacks(sdata.channel, &channel_cb);
